package com.wn.icloud.gateway;

import com.wn.icloud.auth.client.EnableAuthClient;
import com.wn.icloud.gateway.utils.DBLog;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * @author Rainer
 * @create 2018/3/12.
 */
//@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。
//@Configuration  @Configuration的注解类标识这个类可以使用Spring IoC容器作为bean定义的来源。@Bean注解告诉Spring，一个带有@Bean的注解方法将返回一个对象，该对象应该被注册为在Spring应用程序上下文中的bean。
//@EnableAutoConfiguration 能够自动配置spring的上下文，试图猜测和配置你想要的bean类，通常会自动根据你的类路径和你的bean定义自动配置。
//@ComponentScan 会自动扫描指定包下的全部标有@Component的类，并注册成bean，当然包括@Component下的子注解@Service,@Repository,@Controller。
@SpringBootApplication
//nacos注解
@EnableDiscoveryClient
//自定义注解(权限相关)
@EnableAuthClient
//告诉框架扫描所有使用注解@FeignClient定义的feign客户端。它又通过注解@Import导入了类FeignClientsRegistrar( feign客户端注册器),如下所示:
//启用了feign客户端定义的扫描和注册机制，从而可以发现开发人员通过注解@FeignClient定义的feign客户端，并最终作为bean定义注册到容器中
@EnableFeignClients("com.wn.icloud.provider.uac")
@EnableHystrix
public class GatewayApplication {
    public static void main(String[] args) {
        DBLog.getInstance().start();
        SpringApplication.run(GatewayApplication.class, args);
    }
}
